首页 / 技术类 / C# / 练习了下数组和类,C++ 基础还算可以,不是很吃力

[C#]练习了下数组和类,C++ 基础还算可以,不是很吃力

2007-06-10 16:21:00

  1using System;
  2
  3namespace _02
  4{
  5    class SortNum  //输入几个数、排序、输出
  6    {
  7        private int[] iNum;
  8
  9        public SortNum()
 10        {
 11            Init();
 12            InputValue();
 13        }
 14
 15        private void Init()  //读入数字总数并分配空间
 16        {
 17            Console.WriteLine("请输入数字的总数:");
 18            try
 19            {
 20                iNum = new int[Int16.Parse(Console.ReadLine())];
 21            }
 22            catch
 23            {
 24                Console.WriteLine("您输入的不是有效的数字。");
 25                Init();
 26            }
 27        }
 28
 29        private void InputValue()  //输入数字
 30        {   
 31            for(int i = 0;i < iNum.Length; i++)
 32            {
 33                Console.WriteLine("请输入第 {0} 个数字:", i + 1);
 34                try
 35                {
 36                    iNum[i] = Int16.Parse(Console.ReadLine());
 37                }
 38                catch
 39                {
 40                    Console.WriteLine("您输入的不是有效的数字。");
 41                    i--;
 42                }
 43            }
 44            Console.WriteLine("输入结束。");
 45        }
 46
 47        public void Sort(bool inverse)
 48        //选择法排序, 若 inverse 为真则从大到小排序, 否则从小到大排序
 49        {
 50            int i, j, temp;
 51
 52            for (i = 0; i < iNum.Length; i++)
 53            {
 54                for (j = i + 1; j < iNum.Length; j++)
 55                {
 56                    if (inverse)
 57                    {
 58                        if (iNum[i] < iNum[j])
 59                        {
 60                            temp = iNum[i];
 61                            iNum[i] = iNum[j];
 62                            iNum[j] = temp;
 63                        }
 64                    }
 65                    else
 66                    {
 67                        if (iNum[i] > iNum[j])
 68                        {
 69                            temp = iNum[i];
 70                            iNum[i] = iNum[j];
 71                            iNum[j] = temp;
 72                        }
 73                    }
 74                }
 75            }
 76        }
 77
 78        public void Sort()  //从小到大
 79        {
 80            Sort(false);
 81        }
 82
 83        public void Print()  //输出
 84        {
 85            foreach (int num in iNum)
 86            {
 87                Console.Write("{0, 3}", num);
 88            }
 89            Console.Write("/n");
 90        }
 91    }
 92
 93    class Program
 94    {
 95        static void Main(string[] args)
 96        {
 97            do
 98            {
 99                SortNum a = new SortNum();
100
101                Console.WriteLine("您输入的数字是:");
102                a.Print();
103                a.Sort();
104                Console.WriteLine("从小到大排序后是:");
105                a.Print();
106                a.Sort(true);
107                Console.WriteLine("从大到小排序后是:");
108                a.Print();
109
110                Console.Write("按 ESC 退出, 其他任意键继续.../n/n");
111            }
112            while (Console.ReadKey(true).Key != ConsoleKey.Escape);
113        }
114    }
115}
116
117/*
118 * 学习手记
119 * 
120 * Console.ReadLine() 从标准输入设备读入一行字符串
121 * Int16.Parse() 将字符串转换为 Int16 类型数值
122 * try...catch... 出错控制,感觉用起来还挺方便
123 * 跟 C/C++ 的一个重大区别是,定义数组、类其实都相当于定义指针
124 * 并没有分配空间,还要用 new 去分配空间
125 * 据说不用 delete 它会自动回收空间
126 * 那么析构函数似乎用不太着了
127 * 居然不支持默认参数,只好用重载
128 * Console.ReadKey() 返回一个 ConsoleKeyInfo 对象, 其 Key 成员表示相应的键
129 * 
130 * 2005-06-09
131 */

首发:https://blog.csdn.net/cnStreamlet/article/details/1646808



NoteIsSite/0.4